The present invention relates to a message store for hand-held computers such as Handheld PC or Palm-size PC. More particularly, one aspect of the present invention relates to a set of application programming interface functions (APIs) which are utilized to store, manipulate, and retrieve electronic messages from a message store that has a hierarchical folder structure. Another aspect of the present invention relates to a set of APIs which are utilized to store, manipulate, and retrieve electronic messages in a message store system having a hierarchical folder structure that is backward compatible with previous more primitive versions of the Handheld PC/Palm-size PC message store.
As computers continue to develop, people are becoming more reliant on them for both conducting business and managing their everyday affairs. This ever-increasing acceptance is particularly true for hand-held computers, which are commonly used as personal information managers (PIM). PIM functions commonly contain e-mail, task list, calendar and contact information. Most hand-held devices can be synchronized with PIM data that is stored on a remote computer such as a network server or a desktop personal computer.
A particularly useful feature of hand-held computers is the inclusion of messaging software for receiving and managing electronic messages such as e-mails. Furthermore, more and more users have multiple messaging accounts with different services. For example, a user might have an e-mail account with his or her employer, a personal e-mail account with a commercial service, and an e-mail account for a home-based business.
Electronic messages are created, manipulated, stored, retrieved, and maintained using application processes executing on the hand-held computers. These application processes comprise e-mail client processes and hand-held computer synchronization processes. These application processes interact with the message stores by calling APIs developed to provide these functions.
Electronic messages are typically stored in a message store database. The message store system usually permits a user to organize his or her messages into folders such as those commonly named Inbox, Outbox, and Deleted Items. Additionally, most message store systems allow the user to define his or her own folders so that the user can organize and manage their messages in a way that suits their individual needs.
The application processes interact with the message store through the use of a set of APIs. These APIs comprise a set of functional routines used by an application process to direct the performance of procedures by other computer processes. For application processes that interact with the message store systems, these APIs permit the application to store data within the message store, to retrieve data from the message store, and to traverse through a folder architecture used to organize the messages within the message store system.
One problem with the current architecture for message stores on many Handheld PCs is that they contain only a single, flat folder structure. In other words, the message store system does not allow a parent/child relationship between folders. Nor does the message store allow different sets of folders. There is only one set or group of folders that can include up to 256 folders. Accordingly, current message store systems typically place all electronic messages that are received in the same flat folder structure or set of folders. Currently messages coming from different services are placed in the same set of folders.
Another problem arises because many applications still utilize application processes that expect to interact with an early generation of Handheld PC/Palm-size PC messages stores that have a flat folder architecture. Even if a hand-held computer was designed with a message store that addresses these problems, it would not be compatible with these application processes that use an earlier generation of API function calls to interact with a flat folder architecture for the message store system. This limitation would prevent many users from upgrading the message store on their hand-held computers. If they did upgrade their hand-held message store, they would be required to also upgrade the application processes used to manipulate data within the message store.
The present invention addresses these problems by providing a set of APIs used in creating and maintaining hierarchical folder structure for the storage of electronic messages in a hand-held computer. Such a folder structure permits the creation of a folder hierarchy for each message service with which the user has an account. As a result, the hand-held message store can organize messages received from different services. The APIs provide the functions necessary for an application to access messages in the hierarchical folder structure.
Another aspect of the preset invention also provides backward compatibility with APIs utilized to create and maintain a flat folder structure organization of the message store. This backward compatibility permits a hand-held computer embodying the present invention to execute application processes that were developed to interact with an earlier generation flat folder structure.
Yet another aspect of the present invention addresses the replacement of the flat folder architecture by a user-defined, hierarchical folder architecture. The flat folder architecture uses an 8-bit value to indicate the folder ID for the message being processed. This parameter imposed a limit of 256 folders, including the special folders of Inbox, Outbox, and Sent. The user-specified, hierarchical folder structure uses a 16-bit field for the folder ID in order to allow many more folders to be present in the message store. As a result, a backward compatibility module within an improved message store is needed to check this folder ID parameter to determine if the folder ID is less than 256. If it is less than 256, a data manipulation module assumes that the application process is interacting with the default hierarchy. The data manipulation module then creates a 16-bit version of the folder ID parameter before issuing a command to the corresponding extended API which implements the functionality of the called standard API. The backward compatibility module also converts the folder IDs of special folders, ie. Inbox, Outbox, and Sent folders, to the folder IDs of corresponding special folders in the folder hierarchy corresponding to the service from which the message is downloaded.